Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Лабораторна робота №3

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
Інститут комп’ютерних технологій, автоматики та метрології
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт про виконання розрахункової роботи
Предмет:
Об’єктно-орієнтоване програмування

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ / Звіт про виконання лабораторної роботи №3 з дисципліни: “Програмування, частина 2 (Об’єктно-орієнтоване програмування)” на тему:“ Засоби роботи з динамічною пам’яттю. Динамічні масиви ” 2017 Мета: познайомитися із динамічними масивами. Теоретичні відомості Динамічне виділення пам’яті В С++ об’єкти можна розміщати статично – під час компіляції, або динамічно – під час виконання програми, шляхом виклику функцій зі стандартної бібліотеки. Основна відмінність у використанні даних методів – в їхній ефективності та гнучкості. Статичне розміщення більш ефективне, так як виділення пам’яті відбувається до виконання програми, проте воно менш гнучке, тому що необхідно наперед знати тип і розмір об’єкту. Задачі, в яких необхідно зберігати та обробляти наперед не відому кількість елементів, зазвичай потребують динамічного виділення пам’яті. Динамічне виділення пам’яті у мові С++ здійснюється за допомогою оператора new. Оператор new здійснює пошук неперервної області пам’яті в області пам’яті, що зветься некерована куча. Некерована куча – це стрктура даних за допомогою якої реалізована пам’ять, що може бути виділена динамічно в ході виконання програми, а також це область пам’яті, зарезервована під цю структуру. З іншої сторони куча - це довгий відрізок адрес пам'яті, поділений на блоки різних розмірів, що йдуть підряд. Пам’ять у кучі поділяється на заняту і вільну. Перед початком роботи програми вся пам’ять у кучі позначається як вільна. При виклику оператора динамічного виділення пам’яті у кучі відбувається пошук неперервного сегменту вільної пам’яті заданого розміру. Час такого пошуку є значним і займає більшу частину часу, що необхідна для виконання операції динамічного виділення пам’яті. Якщо такий сегмент було знайдено в кучі, то він помічається як занятий і програмі повертається адреса його початку, інакше – програмі повертається ознака відсутності такого сегменту в пам’яті, найчастіше NULL. Якщо в ході виконання програми значення адреси початку цього сегменту втрачається, то заняту пам’ять звільнити буде неможливо. Якщо ця ситуація проявляється неодноразово, то це може призвести до вичерпання вільної пам’яті в системі. Коли динамічно виділена область пам’яті стає непотрібною, то її потрібно звільнити за допомогою оператора звільнення динамічно виділеної пам’яті. При його виклику область пам’яті на яку вказує вказівник і яка була попередньо динамічно виділена з кучі позначається як вільна і її можна буде в подальшому використовувати заново. Оператор динамічного виділення пам’яті new може мати дві форми: Виділення пам’яті під одиничний об’єкт має наступний синтаксис: тип *вказівник = new тип;   Наприклад, при виконанні оператора іnt *іp = new іnt;   створюються 2 об'єкти: динамічний безіменний об'єкт розміром 4 байти (значення типу int займає 4 байти) і вказівник на нього з ім'ям іp розміром також 4 байти (у 32-ох бітній системі адреса займає 32 біти), значенням якого є адреса у пам’яті динамічного об'єкта. Можна створити й інший вказівник на той же динамічний об'єкт: іnt *other = іp;   Якщо вказівникові іp присвоїти інше значення, то можна втратити доступ до динамічного об'єкта: іnt *іp = new іnt; іnt і = 0; іp = &і;   У результаті динамічний об'єкт як і раніше буде існувати, але звернутися до нього буде вже не можна. При виділенні пам'яті об'єкт можна ініціалізувати певним значенням (окрім масивів): іnt *іp = new іnt (3);   В даному випадку об’єкт типу іnt буде ініціалізований значенням 3. Виділення пам’яті під масив заданого розміру має наступний синтаксис: тип *вказівник = new тип[розмір_масиву];   Наприклад, при виконанні оператора double *mas = new double [50];   виділяється пам’...
Антиботан аватар за замовчуванням

02.10.2017 01:10

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини